package zmqserv

import (
	"fmt"
	"strings"

	"github.com/hjl/db/utils"
	"github.com/hjl/db/zwrapper/broker"
	"github.com/hjl/db/zwrapper/zmqobj"
)

type MyWorker struct{} // 用于实现 回调接口

func StartServ() {
	// 获取 IPC 地址
	ipcAddr := utils.GetString("zmq_work_addr_db")
	if ipcAddr == "" {
		return
	}

	ipcAddr = strings.Trim(ipcAddr, `"`)
	logpath := "../workdbzmq.log"

	// 创建 IPC 对象
	zobj := zmqobj.NewZmqObj(ipcAddr, logpath, &MyWorker{}) // 传入回调对象
	zobj.Start("sqlserver")
}

// 实现回调函数
func (worker *MyWorker) Do(strs []string) {
	funcName, argstr, addr := strs[0], strs[1], strs[2]
	// 正常处理业务逻辑，如增删改查
	fmt.Printf("数据库成功收到一个消息，addr:%s,funcName:%s,argstr:%s\n", addr, funcName, argstr)

	// 检查一下是否可以访问数据库
	sqlstr := "delete from users where id = 2"
	broker.Input2db_work(sqlstr)
}
